/**
 * 根目录新建一个vue.config.js文件，该文件会被@vue/cli-service 自动加载
 */
 const path = require("path");
 const configs = require("./build/configs"); // 配置
 const plugins = require("./build/plugins")(); // 配置
 const pages = require("./build/getPages")(); // 多页面配置
 const utils = require('./build/utils')

 console.log('-------webpack--------')
 console.log(pages)
 module.exports = {
   publicPath:
     process.env.NODE_ENV === "production" ? `./` : "/", // 根路径
   outputDir: configs.outputDir, // 输出文件目录
   assetsDir: configs.assetsDir, // 放置生成的静态资源 (js、css、img、fonts) 的目录
   pages, // 用于多页配置，默认undefined
   lintOnSave: true, // eslint-loader 是否在保存的时候检查
   devServer: configs.devServer,
   configureWebpack: config => {
     config.plugins = [...config.plugins, ...plugins];
     // 这些模块不进行打包
     config.externals = {
       "vue": "Vue"
     }
 
     // 公共模块抽离 -- 区分不同模块
     const optimization = {
       splitChunks: {
         cacheGroups: configs.cacheGroups
       }
     };
     config.optimization = Object.assign(config.optimization, optimization);
   },
   chainWebpack: config => {
     /* 删除公共代码抽离 */
     // config.optimization.delete('splitChunks');
 
     /* 注入变量 */
     config
       .plugin('define')
       .tap(args => {
         args[0]['process.env'].CLIENT_ENV = JSON.stringify(process.env.CLIENT_ENV)
         return args
       })
 
     /* SVG文件处理  */
     const svgRule = config.module.rule('svg') // 找到svg-loader
     svgRule.uses.clear() // 清除已有的loader, 如果不这样做会添加在此loader之后
     svgRule
       .test(/\.svg$/)
       .include
       .add(path.resolve(__dirname, 'src/assets/svgs')) //处理svg目录
       .end()
       .use('svg-sprite-loader')
       .loader('svg-sprite-loader')
       .options({
         symbolId: 'icon-[name]'
       })
     // 文件规则
     const fileRule = config.module.rule('file')
     // fileRule.uses.clear()
     fileRule
       // .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
       .test(/\.svg(\?.*)?$/)
       .exclude
       .add(path.resolve(__dirname, 'src/assets/svgs'))
       .end()
       .use('url-loader')
       .loader('url-loader')
       .options({
         limit: 10000,
         name: utils.assetsPath('img/[name].[hash:7].[ext]')
       })
     /* 修复热更新失效 */
     config.resolve.symlinks(true);
 
     /* 设置别名 */
     config.resolve.alias
       .set("@", path.join(__dirname, "src"))
       .set("Views", path.join(__dirname, "src/views"));
 
     /* 模块分析器 */
     if (process.env.NODE_ENV === "production" && configs.bundleAnalyzerReport) {
       config
         .plugin("webpack-bundle-analyzer")
         .use(require("webpack-bundle-analyzer").BundleAnalyzerPlugin);
     }
   },
   productionSourceMap: configs.productionSourceMap, // 生产禁止显示源代码
   css: {
     // css的处理
     sourceMap: configs.cssSourceMap,
    //  loaderOptions: {
    //    sass: {
    //      // 配置全局sass变量
    //      // @是src的别名
    //      prependData: `
    //        @import "@/style/_variablesCustom.scss";
    //        @import "@/style/_variables.scss";
    //        `
    //    }
    //  }
   },
   pluginOptions: {
     // 注入
    //  'style-resources-loader': {
    //    'preProcessor': 'less', // sass|stylus|less
    //    'patterns': [
    //      path.resolve(__dirname, './src/styles/vars.less')
    //    ]
    //  }
   }
 };
 